package io;

import java.io.File;
import java.util.Scanner;
//经典面试题
//查找硬盘上文件的位置
public class IODemo13 {
    public static void main(String[] args) {
        //1、输入必要的信息
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要搜索的文件名：");
        String fileName = scanner.next();
        System.out.println("请输入要搜索的目录：");
        String Path = scanner.next();
        File rootfile = new File(Path);
        if(!rootfile.isDirectory()){
            System.out.println("输入的路径有误！！！");
            return;
        }
        //有了要查找的路径后，就可以按照递归的方式进行搜索
        //递归的起点和要查询的文件名
        scanDir(rootfile,fileName);
    }

    private static void scanDir(File rootfile, String fileName) {
        //1、把当前文件中的目录和子目录罗列出来
        File[] file = rootfile.listFiles();
        if(file == null){
            //如果目录为空返回即可
            return;
        }
        //遍历file，判定每一个file是目录还是文件
        for (File f : file){
            System.out.println("当前遍历到:"+f.getAbsolutePath());
            if(f.isFile()){
                //如果当前是普通文件就判断是否是我们要找的文件
                if(fileName.equals(f.getName())){
                    System.out.println("找到了符合要求的文件:"+f.getAbsolutePath());
                }
            }else if(f.isDirectory()){
                //如果当前是目录就需要进一步递归
                scanDir(rootfile,fileName);
            }else{
                //这个else暂时不考虑
            }
        }
    }
}
